package br.com.unifebe.tcc.model;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

@Entity
@Table(name = "VENDA_ITEM")
public class VendaItem implements Serializable{
  
	private static final long serialVersionUID = 1L;
	@Id
	@SequenceGenerator( name = "CD_VENDA_ITEM", sequenceName = "VENDA_ITEM_SEQ" )  
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "CD_VENDA_ITEM" )  
	@Column(name = "CD_VENDA_ITEM", nullable = false )
	private Long id;
	
	@Column(name = "QT_VENDA", precision = 25, scale = 4 )
	private BigDecimal quantidade;
	
	@Column(name = "VL_PRECO_UNIT_LIQUIDO", precision = 25, scale = 4 )
	private BigDecimal precoUnitarioLiquido;
	
	@Column(name = "VL_DESCONTO", precision = 25, scale = 4 )
	private BigDecimal valorDesconto;
	
	@Column(name = "VL_PRECO_TOTAL", precision = 25, scale = 4 )
	private BigDecimal precoTotal;
	
	@ManyToOne(fetch=FetchType.EAGER, optional=false)
	@JoinColumn(name="CD_PRODUTO")
	private Produto produto;
	
	@ManyToOne(fetch=FetchType.EAGER, optional=false)
	@JoinColumn(name="CD_VENDA")
	private Venda venda;
	
	private Boolean deletado;
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public BigDecimal getQuantidade() {
		if( quantidade == null ){
			quantidade = BigDecimal.ZERO;
		}
		return quantidade;
	}

	public void setQuantidade(BigDecimal quantidade) {
		this.quantidade = quantidade;
	}

	public BigDecimal getPrecoUnitarioLiquido() {
		if( precoUnitarioLiquido == null ){
			precoUnitarioLiquido = BigDecimal.ZERO;
		}
		return precoUnitarioLiquido;
	}

	public void setPrecoUnitarioLiquido(BigDecimal precoUnitarioLiquido) {
		this.precoUnitarioLiquido = precoUnitarioLiquido;
	}

	public BigDecimal getValorDesconto() {
		if( valorDesconto == null ){
			valorDesconto = BigDecimal.ZERO;
		}
		return valorDesconto;
	}

	public void setValorDesconto(BigDecimal valorDesconto) {
		this.valorDesconto = valorDesconto;
	}

	public BigDecimal getPrecoTotal() {
		if( precoTotal== null ){
			precoTotal = BigDecimal.ZERO;
		}
		return precoTotal;
	}

	public void setPrecoTotal(BigDecimal precoTotal) {
		this.precoTotal = precoTotal;
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Venda getVenda() {
		return venda;
	}

	public void setVenda(Venda venda) {
		this.venda = venda;
	}

	public Boolean getDeletado() {
		if( deletado == null ){
			deletado = false;
		}
		return deletado;
	}

	public void setDeletado(Boolean deletado) {
		this.deletado = deletado;
	}
 
}
